package com.day14;

import org.junit.Test;

/**
 * try-catch-finally中finally的使用:
 *
 * 1.finally是可选的
 * 2.finally中声明的是一定会被执行的代码，即使catch中又出现异常了，try中有return语句，catch中有return语句等情况。
 *
 * 3.像数据库连接，输入输出流，网络编程Socket等资源，JVM是不能自动回收的，我们需要手动的进行资源的释放。
 * 此时的资源释放必须声明在finally中。
 *
 * 开发中对运行时异常不进行try-catch处理，进行代码修改处理，编译时异常才进行try-catch处理。
 */
public class FinallyTest {

    @Test
    public void testMethod(){
        int num = method();
        System.out.println(num);
    }


    public int method(){
        try{
            int[] arr = new int[10];
            System.out.println(arr[10]);
            return 1;
        }catch (ArrayIndexOutOfBoundsException e){
            e.printStackTrace();
            return 2;
        }finally {
            System.out.println("我一定会被执行");
            return 3;
        }
    }






    @Test
    public void test1() {
        try{
            int a = 10;
            int b = 0;

            System.out.println(a / b);
        }catch (ArithmeticException e){
            e.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            System.out.println("我好帅啊 ");
        }
    }
}
